import deepClone from '@/libs/deepClone'

function useDevTypeFunConfig() {
  // 设备类型的通信配置
  const defaultDevTypeFunConfig: DeviceType.DevTypeFun[] = []
  let devTypeFunConfig = ref<typeof defaultDevTypeFunConfig>(deepClone(defaultDevTypeFunConfig))
  function setDevTypeFunConfig(data: typeof defaultDevTypeFunConfig) {
    devTypeFunConfig.value = data
  }

  // 设备类型通信组件的通信配置
  const defaultDevTypeModuleFunConfig: AddDevType.DevTypeFunSign = {}
  let devTypeModuleFunConfig = ref<typeof defaultDevTypeModuleFunConfig>(
    deepClone(defaultDevTypeModuleFunConfig)
  )
  function setDevTypeModuleFunConfig(data: typeof defaultDevTypeModuleFunConfig) {
    devTypeModuleFunConfig.value = data
  }

  // 重置配置状态
  function initDevTypeFunConfig(option?: {
    initDevTypeConConfig?: boolean
    initDevTypeModuleConConfig?: boolean
  }) {
    setDevTypeFunConfig(deepClone(defaultDevTypeFunConfig))
    setDevTypeModuleFunConfig(deepClone(defaultDevTypeModuleFunConfig))
  }

  function devTypeFunConfig2devTypeModuleFunConfig(devTypeFunList: typeof defaultDevTypeFunConfig) {
    // 存储原始数据
    setDevTypeFunConfig(devTypeFunList)

    //? 将获取到的设备类型的基本信息配置转为组件所需的数据 start
    let devTypeModuleFunConfig: typeof defaultDevTypeModuleFunConfig = {}

    for (let i = 0; i < devTypeFunList.length; i++) {
      const devTypeFun = devTypeFunList[i]
      devTypeModuleFunConfig[devTypeFun.signDesc] = {
        value: '',
        code: devTypeFun.devTypeFunCode,
        status: devTypeFun.status
      }
    }
    setDevTypeModuleFunConfig(devTypeModuleFunConfig)
    //? 将获取到的设备类型的基本信息配置转为组件所需的数据 end
  }

  return {
    devTypeFunConfig,
    devTypeModuleFunConfig,
    devTypeFunConfig2devTypeModuleFunConfig,
    initDevTypeFunConfig
  }
}
export default useDevTypeFunConfig
